package com.sg.service.biz.bff.impl;

import com.sg.common.util.RedisUtil;
import com.sg.dto.biz.bff.req.BffQueryDeptPostStaffNumListReqDto;
import com.sg.dto.biz.bff.req.BffQueryOrgDeptPositionStaffNumListReqDto;
import com.sg.dto.biz.bff.req.BffQueryOrgPostRankStaffNumListReqDto;
import com.sg.dto.biz.bff.req.BffQueryPostRankStaffNumListReqDto;
import com.sg.dto.biz.bff.res.BffQueryDeptPostStaffNumListRespDto;
import com.sg.dto.biz.bff.res.BffQueryOrgDeptPositionStaffNumListRespDto;
import com.sg.dto.biz.bff.res.BffQueryOrgPostRankStaffNumListRespDto;
import com.sg.dto.biz.bff.res.BffQueryPostRankStaffNumListRespDto;
import com.sg.dto.integration.framework.QueryPostStaffingStatisticsListReqDto;
import com.sg.dto.integration.framework.QueryPostStaffingStatisticsListRespDto;
import com.sg.service.biz.bff.StatisticalDataService;
import com.sg.common.exception.Assert;
import com.wicket.okrframework.integration.StatisticalDataService;
import org.apache.skywalking.apm.toolkit.trace.Tag;
import org.apache.skywalking.apm.toolkit.trace.Tags;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author ：
 * @version 1.0
 * @date ：
 */
@Service
public class StatisticalDataServiceImpl implements StatisticalDataService {
    @Resource
    com.sg.service.biz.framework.StatisticalDataService fwBaseStatisticalDataClient;
    @Resource
    private RedisUtil redisUtil;

    /**
     * B1-3查询岗位或职级编制数（管理）[1732]
     * gen by moon at 8/10/2022, 3:37:17 AM
     */
    @Trace(operationName = "B1-3查询岗位或职级编制数（管理）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryPostRankStaffNumListRespDto queryPostRankStaffNumList(BffQueryPostRankStaffNumListReqDto reqDto) {


        QueryPostStaffingStatisticsListRespDto queryPostStaffingStatisticsListRespDto_1 = null;
//步骤0: D1-3查询编制统计（边界） - queryPostStaffingStatisticsList
        QueryPostStaffingStatisticsListRespDto queryPostStaffingStatisticsListRespDto = null;
        QueryPostStaffingStatisticsListReqDto queryPostStaffingStatisticsListReqDto = new QueryPostStaffingStatisticsListReqDto();
        if (reqDto != null) {
            queryPostStaffingStatisticsListReqDto.setStationId(reqDto.getStationId());//sourceId:53169_1
            queryPostStaffingStatisticsListReqDto.setPositionGradeId(reqDto.getPositionGradeId());//sourceId:53170_1
        }

        /*D1-3查询编制统计（边界）[1734]   */

        queryPostStaffingStatisticsListRespDto = fwBaseStatisticalDataClient.queryPostStaffingStatisticsList(queryPostStaffingStatisticsListReqDto).getData();

        queryPostStaffingStatisticsListRespDto_1 = queryPostStaffingStatisticsListRespDto;

        BffQueryPostRankStaffNumListRespDto retData = new BffQueryPostRankStaffNumListRespDto();
        if (queryPostStaffingStatisticsListRespDto_1 != null) {
            retData.setAllStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getAllStaffingAmount());//sourceId:53180_1
            retData.setEmptyHeadcount(queryPostStaffingStatisticsListRespDto_1.getEmptyHeadcount());//sourceId:53181_1
            retData.setUseStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getUseStaffingAmount());//sourceId:53182_1
            retData.setLockingStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getLockingStaffingAmount());//sourceId:53183_1
        }


        return retData;
    }

    /**
     * B1-3组织部门职务编制数（管理）[1753]
     * gen by moon at 8/10/2022, 3:37:24 AM
     */
    @Trace(operationName = "B1-3组织部门职务编制数（管理）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryOrgDeptPositionStaffNumListRespDto queryOrgDeptPositionStaffNumList(BffQueryOrgDeptPositionStaffNumListReqDto reqDto) {


        QueryPostStaffingStatisticsListRespDto queryPostStaffingStatisticsListRespDto_1 = null;
//步骤0: D1-3查询编制统计（边界） - queryPostStaffingStatisticsList
        QueryPostStaffingStatisticsListRespDto queryPostStaffingStatisticsListRespDto = null;
        QueryPostStaffingStatisticsListReqDto queryPostStaffingStatisticsListReqDto = new QueryPostStaffingStatisticsListReqDto();
        if (reqDto != null) {
            queryPostStaffingStatisticsListReqDto.setDeptId(reqDto.getDeptId());//sourceId:53223_1
            queryPostStaffingStatisticsListReqDto.setOrganizationId(reqDto.getOrganizationId());//sourceId:53224_1
            queryPostStaffingStatisticsListReqDto.setPositionId(reqDto.getPositionId());//sourceId:53225_1
        }

        /*D1-3查询编制统计（边界）[1734]   */

        queryPostStaffingStatisticsListRespDto = fwBaseStatisticalDataClient.queryPostStaffingStatisticsList(queryPostStaffingStatisticsListReqDto).getData();

        queryPostStaffingStatisticsListRespDto_1 = queryPostStaffingStatisticsListRespDto;

        BffQueryOrgDeptPositionStaffNumListRespDto retData = new BffQueryOrgDeptPositionStaffNumListRespDto();
        if (queryPostStaffingStatisticsListRespDto_1 != null) {
            retData.setAllStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getAllStaffingAmount());//sourceId:53229_1
            retData.setEmptyHeadcount(queryPostStaffingStatisticsListRespDto_1.getEmptyHeadcount());//sourceId:53230_1
            retData.setUseStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getUseStaffingAmount());//sourceId:53231_1
            retData.setLockingStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getLockingStaffingAmount());//sourceId:53232_1
        }


        return retData;
    }

    /**
     * B1-3查询部门岗位编制数（管理）[1752]
     * gen by moon at 8/10/2022, 3:37:23 AM
     */
    @Trace(operationName = "B1-3查询部门岗位编制数（管理）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryDeptPostStaffNumListRespDto queryDeptPostStaffNumList(BffQueryDeptPostStaffNumListReqDto reqDto) {


        QueryPostStaffingStatisticsListRespDto queryPostStaffingStatisticsListRespDto_1 = null;
//步骤0: D1-3查询编制统计（边界） - queryPostStaffingStatisticsList
        QueryPostStaffingStatisticsListRespDto queryPostStaffingStatisticsListRespDto = null;
        QueryPostStaffingStatisticsListReqDto queryPostStaffingStatisticsListReqDto = new QueryPostStaffingStatisticsListReqDto();
        if (reqDto != null) {
            queryPostStaffingStatisticsListReqDto.setStationId(reqDto.getStationId());//sourceId:53201_1
            queryPostStaffingStatisticsListReqDto.setDeptId(reqDto.getDeptId());//sourceId:53207_1
        }

        /*D1-3查询编制统计（边界）[1734]   */
        Assert.isNull(queryPostStaffingStatisticsListReqDto.getStationId(), "B1-3查询部门岗位编制数（管理）-D1-3查询编制统计（边界）-关联岗位ID不能为空", false);
        Assert.isNull(queryPostStaffingStatisticsListReqDto.getDeptId(), "B1-3查询部门岗位编制数（管理）-D1-3查询编制统计（边界）-部门ID不能为空", false);
        queryPostStaffingStatisticsListRespDto = fwBaseStatisticalDataClient.queryPostStaffingStatisticsList(queryPostStaffingStatisticsListReqDto).getData();

        queryPostStaffingStatisticsListRespDto_1 = queryPostStaffingStatisticsListRespDto;

        BffQueryDeptPostStaffNumListRespDto retData = new BffQueryDeptPostStaffNumListRespDto();
        if (queryPostStaffingStatisticsListRespDto_1 != null) {
            retData.setAllStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getAllStaffingAmount());//sourceId:53213_1
            retData.setEmptyHeadcount(queryPostStaffingStatisticsListRespDto_1.getEmptyHeadcount());//sourceId:53214_1
            retData.setUseStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getUseStaffingAmount());//sourceId:53215_1
            retData.setLockingStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getLockingStaffingAmount());//sourceId:53216_1
        }


        return retData;
    }

    /**
     * B1-3查询组织岗位或职级编制数（管理）[1751]
     * gen by moon at 8/10/2022, 3:37:22 AM
     */
    @Trace(operationName = "B1-3查询组织岗位或职级编制数（管理）")
    @Tags({@Tag(key = "参数", value = "arg[0]"),
            @Tag(key = "返回值", value = "returnedObj")})
    @Override
    public BffQueryOrgPostRankStaffNumListRespDto queryOrgPostRankStaffNumList(BffQueryOrgPostRankStaffNumListReqDto reqDto) {


        QueryPostStaffingStatisticsListRespDto queryPostStaffingStatisticsListRespDto_1 = null;
//步骤0: D1-3查询编制统计（边界） - queryPostStaffingStatisticsList
        QueryPostStaffingStatisticsListRespDto queryPostStaffingStatisticsListRespDto = null;
        QueryPostStaffingStatisticsListReqDto queryPostStaffingStatisticsListReqDto = new QueryPostStaffingStatisticsListReqDto();
        if (reqDto != null) {
            queryPostStaffingStatisticsListReqDto.setStationId(reqDto.getStationId());//sourceId:53185_1
            queryPostStaffingStatisticsListReqDto.setPositionGradeId(reqDto.getPositionGradeId());//sourceId:53186_1
            queryPostStaffingStatisticsListReqDto.setOrganizationId(reqDto.getOrganizationId());//sourceId:53192_1
        }

        /*D1-3查询编制统计（边界）[1734]   */
        Assert.isNull(queryPostStaffingStatisticsListReqDto.getOrganizationId(), "B1-3查询组织岗位或职级编制数（管理）-D1-3查询编制统计（边界）-组织ID不能为空", false);
        queryPostStaffingStatisticsListRespDto = fwBaseStatisticalDataClient.queryPostStaffingStatisticsList(queryPostStaffingStatisticsListReqDto).getData();

        queryPostStaffingStatisticsListRespDto_1 = queryPostStaffingStatisticsListRespDto;

        BffQueryOrgPostRankStaffNumListRespDto retData = new BffQueryOrgPostRankStaffNumListRespDto();
        if (queryPostStaffingStatisticsListRespDto_1 != null) {
            retData.setAllStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getAllStaffingAmount());//sourceId:53194_1
            retData.setEmptyHeadcount(queryPostStaffingStatisticsListRespDto_1.getEmptyHeadcount());//sourceId:53195_1
            retData.setUseStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getUseStaffingAmount());//sourceId:53196_1
            retData.setLockingStaffingAmount(queryPostStaffingStatisticsListRespDto_1.getLockingStaffingAmount());//sourceId:53197_1
        }


        return retData;
    }
    //
}
